home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / windows / win31 / macsyma.arj / MACSDEMO.EXE / DIFFER.OUT < prev    next >
Text File  |  1993-09-11  |  7KB  |  117 lines

  1.  
  2. (c1) /*  Demonstration of Difference Equation Package DIFFER
  3. */
  4. if get('differ,'version)=false then load(differ)$
  5. C:\MACSD2B\share\DIFFER.fas being loaded.
  6. C:\MACSD2B\share\JORDAN_F.fas being loaded.
  7. C:\MACSD2B\share\jordanl.fas being loaded.
  8. C:\MACSD2B\share\powers.fas being loaded.
  9.  
  10. (c2) /*  First Order Equations  */
  11. f[n+1]=f[n];
  12. |$label(0,15,Times New Roman,$(d2$))$sub(f,n$in( + )1)$hinge()$in( = )$sub(f,n)
  13.  
  14. (c3) /* The function to use is DIFFERENCEQ. */
  15. differenceq(%,f[n]);
  16. |$label(0,15,Times New Roman,$(d3$))$sub(f,n)$hinge()$in( = )$sub(f,0)
  17.  
  18. (c4) g[0]:1$
  19.  
  20. (c5) g[n+1]=2*g[n];
  21. |$label(0,15,Times New Roman,$(d5$))$sub(g,n$in( + )1)$hinge()$in( = )2$hinge()$in( )$sub(g,n)
  22.  
  23. (c6) differenceq(%,g[n]);
  24. |$label(0,15,Times New Roman,$(d6$))$sub(g,n)$hinge()$in( = )$sup(2,n)
  25.  
  26. (c7) h[n+1]=3*h[n]+2;
  27. |$label(0,15,Times New Roman,$(d7$))$sub(h,n$in( + )1)$hinge()$in( = )3$in( )$sub(h,n)$hinge()$in( + )2
  28.  
  29. (c8) differenceq(%,h[n]);
  30. |$label(0,15,Times New Roman,$(d8$))$sub(h,n)$hinge()$in( = )$sub(h,0)$in( )$sup(3,n)$hinge()$in( + )$sup(3,n)$hinge()$in( - )1
  31.  
  32. (c9) /*  Systems of homogeneous first order equations:
  33.           If you set DIFFERVERBOSE:TRUE, DIFFERENCEQ offers a narrative. */
  34. differverbose:true$
  35.  
  36. (c10) eqn1:y[k+1]+z[k]-3*y[k]=0;
  37. |$label(0,15,Times New Roman,$(d10$))$sub(y,k$in( + )1)$hinge()$in( + )$sub(z,k)$hinge()$in( - )3$in( )$sub(y,k)$hinge()$in( = )0
  38.  
  39. (c11) eqn2:3*y[k]+z[k+1]-5*z[k]=0;
  40. |$label(0,15,Times New Roman,$(d11$))$sub(z,k$in( + )1)$hinge()$in( - )5$in( )$sub(z,k)$hinge()$in( + )3$in( )$sub(y,k)$hinge()$in( = )0
  41.  
  42. (c12) differenceq([eqn1,eqn2],[y[k],z[k]]);
  43. |$label(0,15,Times New Roman,$(e12$))$sub(u,k)$hinge()$in( = )$matrix(1,2,$sub(y,k),$sub(z,k))
  44.  
  45. |$label(0,15,Times New Roman,$(e13$))$sub(u,0)$hinge()$in( = )$matrix(1,2,$sub(y,0),$sub(z,0))
  46.  
  47. |$label(0,15,Times New Roman,$(e14$))a$hinge()$in( = )$matrix(2,2,3,$in( - )1,$in( - )3,5)
  48.  
  49. |$label(0,15,Times New Roman,$(e15$))$sub(u,k$in( + )1)$hinge()$in( = )a$hinge()$in( )$sub(u,k)
  50.  
  51. |$label(0,15,Times New Roman,$(e16$))$sub(u,k)$hinge()$in( = )s$hinge()$in( . )$sup($greektext(l),k)$hinge()$in( . )$sup(s,- 1)$hinge()$in( . )$sub(u,0)
  52.  
  53. C:\MACSD2B\share\matsolve.fas being loaded.
  54. C:\MACSD2B\share\blinalgl.fas being loaded.
  55. |$label(0,15,Times New Roman,$(d16$))$matrix(1,2,$sub(y,k)$in( = )$q($sub(y,0)$in( )$paren($sup(6,k)$in( + )3$in( )$sup(2,k),$(,$)),4)$in( - )$q($sub(z,0)$in( )$paren($sup(6,k)$in( - )$sup(2,k),$(,$)),4),$sub(z,k)$in( = )$q($sub(z,0)$in( )$paren(3$in( )$sup(6,k)$in( + )$sup(2,k),$(,$)),4)$in( - )$q($sub(y,0)$in( )$paren(3$in( )$sup(6,k)$in( - )3$in( )$sup(2,k),$(,$)),4))
  56.  
  57. (c17) /* DIFFERENCEQ knows how to solve linear difference equations,
  58.    even when the associated matrix is not diagonalizable. */
  59. eqn1:x[k+1]=7*x[k]+y[k]+2*z[k];
  60. |$label(0,15,Times New Roman,$(d17$))$sub(x,k$in( + )1)$hinge()$in( = )2$in( )$sub(z,k)$hinge()$in( + )$sub(y,k)$hinge()$in( + )7$in( )$sub(x,k)
  61.  
  62. (c18) eqn2:y[k+1]=-x[k]+7*y[k];
  63. |$label(0,15,Times New Roman,$(d18$))$sub(y,k$in( + )1)$hinge()$in( = )7$in( )$sub(y,k)$hinge()$in( - )$sub(x,k)
  64.  
  65. (c19) eqn3:z[k+1]=x[k]-y[k]+6*z[k];
  66. |$label(0,15,Times New Roman,$(d19$))$sub(z,k$in( + )1)$hinge()$in( = )6$in( )$sub(z,k)$hinge()$in( - )$sub(y,k)$hinge()$in( + )$sub(x,k)
  67.  
  68. (c20) (differverbose:false,differenceq([eqn1,eqn2,eqn3],[x[k],y[k],z[k]]));
  69. |$label(0,15,Times New Roman,$(d20$))$matrix(1,3,$sub(x,k)$in( = )$q($sub(z,0)$in( )$paren(3$in( )$sup(8,k)$in( + )$paren(k$in( - )3,$(,$))$in( )$sup(6,k),$(,$)),6)$in( + )$q($sub(x,0)$in( )$paren($sup(8,k)$in( + )$sup(6,k),$(,$)),2)$in( + )$q($sub(y,0)$in( )k$in( )$sup(6,k),6),$sub(y,k)$in( = )$in( - )$q($sub(z,0)$in( )$paren(3$in( )$sup(8,k)$in( + )$paren($in( - )k$in( - )3,$(,$))$in( )$sup(6,k),$(,$)),6)$in( - )$q($sub(x,0)$in( )$paren($sup(8,k)$in( - )$sup(6,k),$(,$)),2)$in( + )$q($sub(y,0)$in( )$paren(k$in( + )6,$(,$))$in( )$sup(6,k),6),$sub(z,k)$in( = )$q($sub(z,0)$in( )$paren(3$in( )$sup(8,k)$in( + )$paren(3$in( - )k,$(,$))$in( )$sup(6,k),$(,$)),6)$in( + )$q($sub(x,0)$in( )$paren($sup(8,k)$in( - )$sup(6,k),$(,$)),2)$in( - )$q($sub(y,0)$in( )k$in( )$sup(6,k),6))
  70.  
  71. (c21) /* It is also possible to specify initial conditions as an optional argument
  72.    to DIFFERENCEQ. */
  73. ics:[x[0]=1,y[0]=2,z[0]=z0];
  74. |$label(0,15,Times New Roman,$(d21$))$open([)$sub(x,0)$hinge()$in( = )1$ina($, )$hinge()$sub(y,0)$hinge()$in( = )2$ina($, )$hinge()$sub(z,0)$hinge()$in( = )z0$close(])
  75.  
  76. (c22) differenceq([eqn1,eqn2,eqn3],[x[k],y[k],z[k]],ics);
  77. |$label(0,15,Times New Roman,$(d22$))$matrix(1,3,$sub(x,k)$in( = )$q($paren(3$in( )$sup(8,k)$in( + )$paren(k$in( - )3,$(,$))$in( )$sup(6,k),$(,$))$in( )z0,6)$in( + )$q($sup(8,k)$in( + )$sup(6,k),2)$in( + )$q(k$in( )$sup(6,k),3),$sub(y,k)$in( = )$in( - )$q($paren(3$in( )$sup(8,k)$in( + )$paren($in( - )k$in( - )3,$(,$))$in( )$sup(6,k),$(,$))$in( )z0,6)$in( - )$q($sup(8,k)$in( - )$sup(6,k),2)$in( + )$q($paren(k$in( + )6,$(,$))$in( )$sup(6,k),3),$sub(z,k)$in( = )$q($paren(3$in( )$sup(8,k)$in( + )$paren(3$in( - )k,$(,$))$in( )$sup(6,k),$(,$))$in( )z0,6)$in( + )$q($sup(8,k)$in( - )$sup(6,k),2)$in( - )$q(k$in( )$sup(6,k),3))
  78.  
  79. (c23) /*  Second Order Equations */
  80. y[k+2]-6*y[k+1]+8*y[k]=0;
  81. |$label(0,15,Times New Roman,$(d23$))$sub(y,k$in( + )2)$hinge()$in( - )6$in( )$sub(y,k$in( + )1)$hinge()$in( + )8$in( )$sub(y,k)$hinge()$in( = )0
  82.  
  83. (c24) differenceq(%,y[k]);
  84. |$label(0,15,Times New Roman,$(d24$))$sub(y,k)$hinge()$in( = )$q($sub(y,1)$in( )$paren($sup(4,k)$in( - )$sup(2,k),$(,$)),2)$hinge()$in( + )$sub(y,0)$in( )$paren(2$in( )$sup(2,k)$in( - )$sup(4,k),$(,$))
  85.  
  86. (c25) differverbose:false$
  87.  
  88. (c26) y[0]:3$
  89.  
  90. (c27) y[1]:2$
  91.  
  92. (c28) y[k+2]-6*y[k+1]+8*y[k]=0;
  93. |$label(0,15,Times New Roman,$(d28$))$sub(y,k$in( + )2)$hinge()$in( - )6$in( )$sub(y,k$in( + )1)$hinge()$in( + )8$in( )$sub(y,k)$hinge()$in( = )0
  94.  
  95. (c29) differenceq(%,y[k]);
  96. |$label(0,15,Times New Roman,$(d29$))$sub(y,k)$hinge()$in( = )$q($sub(y,1)$in( )$paren($sup(4,k)$in( - )$sup(2,k),$(,$)),2)$hinge()$in( + )$sub(y,0)$in( )$paren(2$in( )$sup(2,k)$in( - )$sup(4,k),$(,$))
  97.  
  98. (c30) part(%,2),k=5;
  99. |$label(0,15,Times New Roman,$(d30$))$in( - )1888
  100.  
  101. (c31) /*  Fibonacci Numbers:   1, 1, 2, 3, 5, 8, 13, 21, ...  */
  102. f[0]:1$
  103.  
  104. (c32) f[1]:1$
  105.  
  106. (c33) f[n+2]=f[n+1]+f[n];
  107. |$label(0,15,Times New Roman,$(d33$))$sub(f,n$in( + )2)$hinge()$in( = )$sub(f,n$in( + )1)$hinge()$in( + )$sub(f,n)
  108.  
  109. (c34) differenceq(%,f[n]);
  110. |$label(0,15,Times New Roman,$(d34$))$sub(f,n)$hinge()$in( = )$q($sub(f,0)$in( )$paren($sqrt(5)$in( )$paren($sup($paren(10$in( - )2$in( )$sqrt(5),$(,$)),n)$in( )$sup($paren($in( - )1,$(,$)),n)$in( - )$sup($paren(2$in( )$sqrt(5)$in( + )10,$(,$)),n),$(,$))$in( + )5$in( )$sup($paren(10$in( - )2$in( )$sqrt(5),$(,$)),n)$in( )$sup($paren($in( - )1,$(,$)),n)$in( + )5$in( )$sup($paren(2$in( )$sqrt(5)$in( + )10,$(,$)),n),$(,$)),10$in( )$sup(4,n)$in( )$sup(5,n$in(/)2))$hinge()$in( - )$q($sub(f,1)$in( )$paren($sup($paren(10$in( - )2$in( )$sqrt(5),$(,$)),n)$in( )$sup($paren($in( - )1,$(,$)),n)$in( - )$sup($paren(2$in( )$sqrt(5)$in( + )10,$(,$)),n),$(,$)),5$in( )$sup(5,n$in(/)2$in( - )1$in(/)2)$in( )$sup(4,n))
  111.  
  112. (c35) ratsimp(ev(part(%,2),n=7));
  113. |$label(0,15,Times New Roman,$(d35$))21
  114.  
  115. (c36) /* Clean Up */
  116. (remvalue(a,eqn1,eqn2,eqn3,ics),remarray(f,g,y))$
  117.